home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
ms_dos
/
tool
/
mercury
/
mercury.h
< prev
next >
Wrap
Text File
|
1995-01-06
|
5KB
|
132 lines
/*
MercuryInstaller for MS-DOS Version 1.00a
共通ヘッダファイル
Copyright (c) 1994,95 Delmonta
*/
#if !defined(LSI_C) || !defined(__STDIO_H)
#include<stdio.h> /* FILE型を使うため */
#endif
/*-----------------------------コンパイラの最適化----------------------------*/
#ifdef LSI_C
#pragma optimize time
#pragma regalo /* 変数をレジスタに割り付け */
#pragma recursive /* nonrecではauto変数の一部がstaticになる */
#endif
/*--------------------------------マクロ関数---------------------------------*/
#define CEIL(a,b) (((a)+(b)-1)/(b)) /* aをbで割って端数を切り上げる */
#define MEMBERSOF(a) (sizeof(a)/sizeof((a)[0])) /* 配列の要素数 */
/*--------------------------------マクロ定数---------------------------------*/
#define CON_XWIDTH 80 /* コンソールの桁数 */
#define CON_YWIDTH 24 /* コンソールの行数 */
#define CON_TABSIZE 8 /* タブの桁数(固定) */
#define TITLEWIDTH 43 /* 作品名の文字数 */
#define MAKEWIDTH (CON_XWIDTH-TITLEWIDTH) /* 作者名の文字数 */
#define VERSION "1.00α" /* バージョン番号 */
/*------------------------コントロールコードを示す文字-----------------------*/
#define FKEY_F1 0x101
#define FKEY_F2 0x102
#define FKEY_F3 0x103
#define FKEY_F4 0x104
#define FKEY_F5 0x105
#define FKEY_F6 0x106
#define FKEY_F7 0x107
#define FKEY_F8 0x108
#define FKEY_F9 0x109
#define FKEY_F10 0x10a
#define FKEY_F11 0x10b
#define FKEY_F12 0x10c
#define FKEY_UP 0x1e
#define FKEY_DOWN 0x1f
#define FKEY_RIGHT 0x1c
#define FKEY_LEFT '\b' /* 98ではBSと左カーソルは同じコード */
#define FKEY_INS FKEY_F8
#define FKEY_DEL FKEY_F4
#define FKEY_ESC 0x1b
#define FKEY_CR '\r'
#define FKEY_BREAK 3
/*----------------------------型とグローバル変数-----------------------------*/
typedef int bool;
typedef unsigned long KEYWORD_T;
#ifdef DEFGLOVAL
#define GLOVAL /* ... */
#define DEFAULT(x) = x
#else
#define GLOVAL extern
#define DEFAULT(x) /* ... */
#endif
GLOVAL char Separators[] DEFAULT(" \t\n");
GLOVAL char DEFAULT_IDXFILENAME[] DEFAULT("helper.idx");
GLOVAL struct DATA
{
char far *title;
char far *make;
char far *dir;
char far *readme;
char far *manual;
struct COPYDATA_T
{
char far *string;
int isxcopy;
struct COPYDATA_T far *next;
} far *copy;
KEYWORD_T keywords;
struct DATA far *next;
} far *Data DEFAULT(NULL);
GLOVAL int Datanum DEFAULT(0);
GLOVAL char *Keyword[32];
GLOVAL char Keywordnum DEFAULT(0);
GLOVAL char Drive DEFAULT('\0');
GLOVAL int Flag_noignore DEFAULT(0);
GLOVAL int Flag_isfmesc DEFAULT(0);
/*---------------------------------_conio.c----------------------------------*/
int ds_getch(void);
void ds_ungetch(int c);
int ds_kbhit(void);
int ds_strinput(char *s,unsigned len);
/*--------------------------------diettsr.c----------------------------------*/
void diet_init(void);
void diet_setmode(bool mode);
/*--------------------------------idxfile.c----------------------------------*/
void readidxfile(char *filename);
/*-------------------------------install.c-----------------------------------*/
void installer(struct DATA far *data);
/*--------------------------------mcstdlib.c---------------------------------*/
int far_fputs(char far *p,FILE *fp);
char *strchop(char *s,size_t n);
int putmessage(char *s,...);
void showcursor(int f);
void far *far_sbrk(size_t size);
char far *far_strdup(const char far *s);
/*---------------------------------menu.c------------------------------------*/
void menu(void);
/*------------------------------patternmatch.c-------------------------------*/
void patternmatch_init(char *s);
int patternmatch(char far *s);
/*---------------------------------start.c-----------------------------------*/
int main(int argc,char **argv);
/*-------------------------------textviewer.c--------------------------------*/
void textviewer(struct DATA far *data);
void openwindow(int ysize,int xsize);
void closewindow(void);
void window_putstr(int ypos,char *format,...);
int window_strinput(char *message,char *buf,unsigned len);
int window_select(char *message,...);
/*---------------------------プログラムについて------------------------------*/
/* このプログラムは本来ならばcompactモデルで組むべきである。farポインタを */
/* 非常に多用するので、smallモデルよりはよっぽどよい。しかし、現在私が使用し */
/* ているLSI C-86試食版はsmallモデル専用なので、仕方がない。わざわざ他の処理 */
/* 系(いちばん安いのはTurboCだろうがそれでもFM用はねえ・・・)を買うだけの経済的 */
/* 余裕も積極的理由もないのでね。 */
/*-----------------------------End of Mercury.h------------------------------*/